package com.dingding.manager.modules.system.controller;

import javax.annotation.Resource;
import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dingding.manager.common.dao.Page;
import com.dingding.manager.common.exception.BussinessException;
import com.dingding.manager.common.exception.enums.BizExceptionEnum;
import com.dingding.manager.core.util.ToolUtil;
import com.dingding.manager.modules.dirver.dto.RespResult;
import com.dingding.manager.modules.system.dto.user.ReqAddUserDTO;
import com.dingding.manager.modules.system.dto.user.ReqUserListDTO;
import com.dingding.manager.modules.system.dto.user.ResUserDTO;
import com.dingding.manager.modules.system.service.UserService;

/**
 * 
* @ClassName: UserController 
* @Description: 用户controller
* @author SUNZHICHENG 
* @date 2016年12月5日 下午8:30:03 
* @version V2.6.2
 */
@Controller
@RequestMapping(value="sys/v1/user")
public class UserController {
	
	@Resource(name="userService")
	UserService userService;

	
	/**
	 * @Description: 获取用户列表        
	 * @date 2016年12月6日 下午2:53:46
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/list")
	@ResponseBody	
	public RespResult<ResUserDTO> getUserList(@Valid ReqUserListDTO reqUserListDTO,Integer start, Integer length){
		Page<ResUserDTO> userList = userService.getUserList(reqUserListDTO,start,length);
		RespResult<ResUserDTO> respResult=new RespResult<ResUserDTO>();
		respResult.setAaData(userList.getList());
		respResult.setiTotalDisplayRecords(userList.getTotalRow());
		respResult.setiTotalRecords(userList.getTotalPage());
		return respResult;		
	}
	
	/**
	 * @Description:根据用户id获取详情        
	 * @date 2016年12月6日 下午2:56:01
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/info")
	@ResponseBody
	public ResUserDTO getUserById(Integer sysUserId){
		if (ToolUtil.isEmpty(sysUserId)) {
			return null;
		}
		return userService.getUserById(sysUserId);		 
	}
	
	
	/**
	 * @Description:删除用户        
	 * @date 2016年12月6日 下午2:58:36
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/del")
	@ResponseBody
	public boolean deleteUser(Integer sysUserId){
		if (ToolUtil.isEmpty(sysUserId)) {
			return false;
		}
		return userService.deleteUser(sysUserId);
	}
	
	/**
	 * @Description: 启用/禁用用户     
	 * @date 2016年12月6日 下午3:00:19
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/state")
	@ResponseBody
	public boolean ModifyUserState(Integer sysUserId,Integer state){
		if (ToolUtil.isEmpty(sysUserId) && ToolUtil.isEmpty(state)) {
			return false;
		}
		return userService.ModifyUserState(sysUserId, state);
	}
	
	/**
	 * @Description: 修改用户        
	 * @date 2016年12月6日 下午3:05:35
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/update")
	@ResponseBody
	public void updateUser(@Valid ReqAddUserDTO reqAddUserDTO,Integer sysUserId, BindingResult result){
		if (result.hasErrors() && ToolUtil.isEmpty(sysUserId)) {
			throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
		}
		 userService.modifyUser( reqAddUserDTO,sysUserId);
	
	}
	
	/**
	 * @Description: 添加用户        
	 * @date 2016年12月6日 下午3:06:19
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/add")
	@ResponseBody
	public void addUser(@Valid ReqAddUserDTO reqAddUserDTO,BindingResult result){
		if (result.hasErrors()) {
			throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
		}
		userService.addUser(reqAddUserDTO);
	}
	
	/**
	 * @Description: 修改用户密码        
	 * @date 2016年12月14日 下午4:50:11
	 * @author SUNZHICHENG 
	 * @since V2.6.2
	 */
	@RequestMapping(value="/updatePwd")
	@ResponseBody
	public void updatePassWord(Integer userId,String newPwd){
		if (ToolUtil.isEmpty(userId) &&  ToolUtil.isEmpty(newPwd)) {
			throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
		}
		userService.updatePassWord(userId, newPwd);
	}
	
}
